﻿/**
    版本：AS3.0

    功能：ID3标签信息(非中文的都是乱码)转换为中文

*/
package zf.media.audio
{
	import flash.utils.ByteArray;
	/**
	 * ID3标签信息转化为中文 
	 * @author mike.zhang
	 * @langversion 3.0 
	 * @playerversion Flash 9 
	 */
	public class ChineseID3
	{
		/**
		 * 转化为UTF8编码 
		 * @param str 要转换的字符串
		 * @return UTF8编码的字符串
		 * 
		 */
		public static function EncodeUTF8 (str:String):String
		{
			if(!str)
			{
				return "";
			}
			if(isChinese(str))
			{
				return str;
			}
							 
			var oriByteArr : ByteArray = new ByteArray();
			oriByteArr.writeUTFBytes (str);
			var tempByteArr : ByteArray = new ByteArray();
			for (var i:int=0; i<oriByteArr.length; i++)
			{
				if (oriByteArr[i] == 194)
				{
					tempByteArr.writeByte (oriByteArr[i+1]);
					i++;
				}
				else if (oriByteArr[i] == 195)
				{
					tempByteArr.writeByte (oriByteArr[i+1] + 64);
					i++;
				}
				else
				{
					tempByteArr.writeByte (oriByteArr[i]);
				}
			}
			tempByteArr.position = 0;
			return tempByteArr.readMultiByte(tempByteArr.bytesAvailable,"gb2312");
		}
		/**
		 * 判断字符串是否中文 
		 * @param char 要判断的字符串
		 * @return 是中文返回true
		 * 
		 */
		private static  function isChinese (char:String):Boolean
		{
			if (char == null)
			{
				return false;
			}
			//char=trim(char);
			var pattern:RegExp = /^[\u0391-\uFFE5]+$/; ;
			var result:Object=pattern.exec(char);
			if (result == null)
			{
				return false;
			}
			return true;
		}
	}
}